From: Florian Müllner Date: Mon, 25 Nov 2019 18:44:10 +0000 (+0100) Subject: introspect: Fix whitelist check X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~363 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=eee1ab48903b83cef18cd85131436c0e1f987513;p=gnome-shell.git introspect: Fix whitelist check The whitelist is a list of well-known D-Bus names, which we then search for the unique name we get from the method invocation - unsuccesfully. Fix this by watching the bus for any name in the whitelist in order to maintain a map from wel-known to unique name that we can use for matching. https://gitlab.gnome.org/GNOME/gnome-shell/issues/1916 --- diff --git a/js/misc/introspect.js b/js/misc/introspect.js index a4c4b0800..d12aac69d 100644 --- a/js/misc/introspect.js +++ b/js/misc/introspect.js @@ -40,6 +40,15 @@ var IntrospectService = class { }); this._syncRunningApplications(); + + this._whitelistMap = new Map(); + APP_WHITELIST.forEach(appName => { + Gio.DBus.watch_name(Gio.BusType.SESSION, + appName, + Gio.BusNameWatcherFlags.NONE, + (conn, name, owner) => this._whitelistMap.set(name, owner), + (conn, name) => this._whitelistMap.delete(name)); + }); } _isStandaloneApp(app) { @@ -51,7 +60,7 @@ var IntrospectService = class { } _isSenderWhitelisted(sender) { - return APP_WHITELIST.includes(sender); + return [...this._whitelistMap.values()].includes(sender); } _getSandboxedAppId(app) {